package com.atguigu.udmp.web.userprofile.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;

public interface UserTagDetailMapper {


    @Insert("alter table user_tag_detail_${tagType} add   partition if exists `${partitionName}`  values in (('${dt}','${tagId}' ))")
    public void addPartition(@Param("tagType")String tagType, @Param("partitionName") String partitionName, @Param("dt")String dt, @Param("tagId") Long tagId);


    @Insert("alter table user_tag_detail_${tagType} add temporary partition `${tempPartitionName}`  values in (('${dt}','${tagId}' ))")
    public void addTempPartition(@Param("tagType")String tagType, @Param("tempPartitionName") String tempPartitionName, @Param("dt")String dt, @Param("tagId") Long tagId);

    @Insert("insert into user_tag_detail_${tagType} temporary partition( `${tempPartitionName}`)\n" +
            "    select  '${dt}',${tagId}, tg.tag_value ,now(), tg.user_id \n" +
            "    from\n" +
            "( $(sql)) tg" )
    public void insertUserTag( @Param("tagType")String tagType,@Param("tempPartitionName") String tempPartitionName,@Param("dt")String dt, @Param("tagId") Long tagId ,@Param("sql") String sql) ;


    @Insert("ALTER TABLE user_tag_detail_${tagType} REPLACE PARTITION ( `${partitionName}`) WITH TEMPORARY PARTITION (`${tempPartitionName}`)\n" +
            "PROPERTIES (\n" +
            "    'strict_range' = 'true',\n" +           //要求替换与被替换分区值一致
            "    'use_temp_partition_name' = 'false'\n" + //要求正式分区不使用临时分区的名称，而使用原正式分区名
            ");" )
    public void replacePartition(@Param("tagType")String tagType,@Param("partitionName") String partitionName,@Param("tempPartitionName") String tempPartitionName );
}
